Distributed computer systems are well known today. For example, a busy web site may employ multiple HTTP (“web”) servers to deliver web pages and files to clients. Typically, the multiple HTTP servers are arranged in a pool for load balancing and backup purposes, and are intended to deliver the same web pages and files to clients upon their request. Ideally, the contents of the web pages and files delivered by all the web server at all times are the same, so that all clients receive the same content when making requests at the same time. There are known techniques to provide that the web servers deliver the same content.
One known technique is to provide a single, shared repository for the web pages and files, and each web server fetches and delivers the web pages and files from this single repository. However, there are problems with this technique—low reliability due to reliance on a single repository, low scalability due to the limited bandwidth and finite response time of a single repository.
Another known technique is for each web server to have its own storage for the web pages and files. As the content of a web page or file changes, a server furnishes the changed web page or file to each of the storages. To ensure that each web page or file is updated and made valid at the same time in each of the storages, a known two-phase commit procedure can be used.
An object of the present invention is to distribute new web pages and files to different storages of different web servers or other servers, and make them consistent across all of the servers.